package logic;

import java.util.ArrayList;

import utilities.MathUtilities;
import utilities.StringUtilities;
import data.DataRecord;
import data.DataEntry;
import data.Interview;


/**
 * Zählt die Interwiews durch und Klassifiziert die Ergebnisse.
 * 
 * @author zenjin
 *
 */
public class DataCounter {
	private static final int GUELTIG = 1;
	private static final int JA = 1;
	private static final int NEIN = 2;
	private static final int VERBOT = 3;
	
	private int gesamtInterviews = 0;
	private int gesamtGueltig = 0;
	private int gesamtJa = 0;
	private int gesamtNein = 0;
	private int gesamtVerbot = 0;
	
	private ArrayList<Integer> times = new ArrayList<Integer>();

	
	public void reset() {
		gesamtInterviews = 0;
		gesamtGueltig = 0;
		gesamtJa = 0;
		gesamtNein = 0;
		gesamtVerbot = 0;
		times = new ArrayList<Integer>();
	}
	public boolean check( Interview data ) {
		boolean state = true;
		gesamtInterviews++;
		
		if( data.getInterviewStatus() == GUELTIG ) {
			gesamtGueltig++;
			times.add( data.getTimeInSeconds() );
		} else {
			return state;
		}
		if( data.getTipStatus() == JA ) {
			gesamtJa++;
		} else if( data.getTipStatus() == NEIN ) {
			gesamtNein++;
		} else if( data.getTipStatus() == VERBOT ) {
			gesamtVerbot++;
		}
		return state;
	}
	
	public String getResultString() {
		String out = 
			//StringMethods.formatNumber3( gesamtInterviews ) + "\t| " +
			StringUtilities.formatNumberDefault( gesamtJa + gesamtNein ) + "\t| " +
			//Utilities.formatNumber3( gesamtJa         ) + "\t| " +
			//Utilities.formatNumber3( gesamtNein       ) + "\t| " +
			//Utilities.formatNumber3( gesamtVerbot     ) + "\t| " +
			StringUtilities.formatNumberDefault( 
					MathUtilities.givePercent( gesamtJa, gesamtJa + gesamtNein ))	+ " %\t| " +
			StringUtilities.formatNumberDefault( 
					MathUtilities.givePercent( gesamtNein, gesamtJa + gesamtNein )) + " %\t| " 
			+ StringUtilities.formatNumberDefault( 
					MathUtilities.givePercent( gesamtVerbot, gesamtGueltig )) + " %\t| "
		;
		return out;
	}
	
	public DataRecord getResult() {
		
		DataRecord data = new DataRecord();
		//data.add( new DataEntry( "gesamtInterviews", gesamtInterviews ));
		//data.add( new DataEntry( "gesamtJa", gesamtJa ));
		//data.add( new DataEntry( "gesamtNein", gesamtNein ));
		//data.add( new DataEntry( "gesamtVerbot", gesamtVerbot ));
		data.add( new DataEntry( "SUM", gesamtJa + gesamtNein ));
		//data.add( new DataEntry( "prozentJa", MathUtilities.givePercent( gesamtJa, gesamtJa + gesamtNein )));
		data.add( new DataEntry( "% Nein",
				MathUtilities.givePercent( gesamtNein, gesamtJa + gesamtNein )));
		data.add( new DataEntry( "% Aufkleber",
				MathUtilities.givePercent( gesamtVerbot, gesamtGueltig )));
		data.add( new DataEntry( "Ø Sekunden", 
				MathUtilities.giveAverage( times )));
		return data;
	}


	public int getGesamtInterviews() {
		return gesamtInterviews;
	}
	public int getGesamtGueltig() {
		return gesamtGueltig;
	}
	public int getGesamtJa() {
		return gesamtJa;
	}
	public int getGesamtNein() {
		return gesamtNein;
	}
	public int getGesamtVerbot() {
		return gesamtVerbot;
	}
}